#!/bin/bash
#统计分析统一调度执行脚本:dispatch.sh
############################################
#################调度执行顺序###############
##1、获取原始日志
##2、按小时切分
##3、对切分后的日志，进行散列处理并存储
##4、GUID分析处理脚本，写入mongodb
##5、UPDATE LASTTIME脚本，更新LASTTIME
##6、每日使用设备数（UV）分析脚本
##7、每日新增设备数（NV）分析脚本
##8、累计使用设备数（AV）分析脚本
##9、每日播放总量（VV）分析脚本
##10、注册成功用户数（PAIKE）分析脚本
##11、上传成功用户数（PAIKE）分析脚本
##12、WAP统计项：PV、UV、VV分析脚本
############################################

#程序脚本目录
PROGRAM_PATH=/opt/wanalytics/scripts
#工具脚本运行日志目录
TOOLS_PATH=/opt/wanalytics/Tools
#切分后小时文件目录
HOUR_LOGPATH=/opt/data/log
#散列后文件目录
HASH_LOGPATH=/opt/data/log
#WAP日志路径
WAP_LOGPATH=/opt/data/log/wap
#MOBIEL手机号
MOBILE="13911532419,13901399069"

date_start=`date "+%s"`

if [ -n "$1" ]; then
    log_date=$1
    log_hour=$2
else
    log_date=`date +%Y%m%d -d '-1 day'`
    log_hour=`date "+%H"`
fi

function exception()
{
    if [ $1 -ne 0 ];then
        echo "**************************************************************************************"
        ##程序执行异常时，短信预警
        SMS_CMD="python $TOOLS_PATH/sendMessage.py $MOBILE \"$2\""
        echo $SMS_CMD
        $SMS_CMD
        exit
    fi
}

echo "**************************************************************************************"

##1、获取原始日志
SCP_CMD="$PROGRAM_PATH/CpLog.sh $log_date nolog"
echo $SCP_CMD
date_cplog_start=`date "+%s"`
$SCP_CMD
##STATUS:程序执行状态，0：成功 非0：失败
STATUS=$?
exception $STATUS "获取原始日志程序CpLog.sh解析出错"
date_cplog_end=`date "+%s"`
time=`expr "$date_cplog_end" - "$date_cplog_start"`
echo "all process for CpLog.sh take $time seconds"
echo "**************************************************************************************"

##2、按小时切分并散列
##注意：Split.py中，会对按小时切分好的日志，再按散列处理
SPLIT_CMD="python -u $PROGRAM_PATH/Split.py $log_date"
echo $SPLIT_CMD
date_split_start=`date "+%s"`
$SPLIT_CMD
##STATUS:程序执行状态，0：成功 非0：失败
STATUS=$?
exception $STATUS "切分程序Split.py解析出错"
date_split_end=`date "+%s"`
time=`expr "$date_split_end" - "$date_split_start"`
echo "all process for Split.py take $time seconds"
echo "**************************************************************************************"

##散列处理并存储
#for i in {0..23};do
#    h=$(printf "%.2d" $i)
#    HASH_CMD="$PROGRAM_PATH/hash_file.sh $HOUR_LOGPATH $HASH_LOGPATH $log_date $h"
#    echo $HASH_CMD
#    $HASH_CMD
#    ##STATUS:程序执行状态，0：成功 非0：失败
#    STATUS=$?
#    exception $STATUS "散列程序hash_file.sh解析出错"
#    echo "*******************************************"
#done

##3、每日播放总量（VV）分析脚本
##4、注册成功用户数（PAIKE）分析脚本
##5、上传成功用户数（PAIKE）分析脚本
MIXED_CMD="python -u $PROGRAM_PATH/Statist.py $log_date"
echo $MIXED_CMD
date_statist_start=`date "+%s"`
$MIXED_CMD
##STATUS:程序执行状态，0：成功 非0：失败
STATUS=$?
exception $STATUS "PAIKE脚本Statist.py解析出错"
date_statist_end=`date "+%s"`
time=`expr "$date_statist_end" - "$date_statist_start"`
echo "all process for Statist.py take $time seconds"
echo "**************************************************************************************"

##6、GUID分析处理脚本，写入mongodb
GUID_CMD="$PROGRAM_PATH/statis_guid_import.sh $HASH_LOGPATH $log_date"
echo $GUID_CMD
date_guidimport_start=`date "+%s"`
$GUID_CMD
##STATUS:程序执行状态，0：成功 非0：失败
STATUS=$?
exception $STATUS "GUID分析处理脚本statis_guid_import.sh解析出错"
date_guidimport_end=`date "+%s"`
time=`expr "$date_guidimport_end" - "$date_guidimport_start"`
echo "all process for statis_guid_import.sh take $time seconds"
echo "**************************************************************************************"

###7、UPDATE LASTTIME脚本，更新LASTTIME
GUIDUP_CMD="$PROGRAM_PATH/guid_lasttime_update.sh $HASH_LOGPATH $log_date"
echo $GUIDUP_CMD
date_guidupdate_start=`date "+%s"`
$GUIDUP_CMD
##STATUS:程序执行状态，0：成功 非0：失败
STATUS=$?
exception $STATUS "UPDATE LASTTIME脚本guid_lasttime_update.sh解析出错"
date_guidupdate_end=`date "+%s"`
time=`expr "$date_guidupdate_end" - "$date_guidupdate_start"`
echo "all process for guid_lasttime_update.sh take $time seconds"
echo "**************************************************************************************"

###8、每日使用设备数（UV）分析脚本
UV_CMD="python -u $PROGRAM_PATH/accuUserPerDay.py $log_date"
echo $UV_CMD
date_accuuserperday_start=`date "+%s"`
$UV_CMD
##STATUS:程序执行状态，0：成功 非0：失败
STATUS=$?
exception $STATUS "UV分析脚本accuUserPerDay.py解析出错"
date_accuuserperday_end=`date "+%s"`
time=`expr "$date_accuuserperday_end" - "$date_accuuserperday_start"`
echo "all process for accuUserPerDay.py take $time seconds"
echo "**************************************************************************************"

###9、每日新增设备数（NV）分析脚本
NV_CMD="python -u $PROGRAM_PATH/newUserPerDay.py $log_date"
echo $NV_CMD
date_newuserperday_start=`date "+%s"`
$NV_CMD
##STATUS:程序执行状态，0：成功 非0：失败
STATUS=$?
exception $STATUS "NV脚本newUserPerDay.py解析出错"
date_newuserperday_end=`date "+%s"`
time=`expr "$date_newuserperday_end" - "$date_newuserperday_start"`
echo "all process for newUserPerDay.py take $time seconds"
echo "**************************************************************************************"

###10、累计使用设备数（AV）分析脚本
AV_CMD="python -u $PROGRAM_PATH/accuTotal.py $log_date"
echo $AV_CMD
date_accutotal_start=`date "+%s"`
$AV_CMD
##STATUS:程序执行状态，0：成功 非0：失败
STATUS=$?
exception $STATUS "AV脚本accuTotal.py解析出错"
date_accutotal_end=`date "+%s"`
time=`expr "$date_accutotal_end" - "$date_accutotal_start"`
echo "all process for accuTotal.py take $time seconds"
echo "**************************************************************************************"

##11、WAP统计项：PV、UV、VV分析脚本
WAP_CMD="python -u $PROGRAM_PATH/log_wap.py $WAP_LOGPATH/$log_date $log_date"
echo $WAP_CMD
date_logwap_start=`date "+%s"`
$WAP_CMD
##STATUS:程序执行状态，0：成功 非0：失败
STATUS=$?
exception $STATUS "WAP脚本log_wap.sh出错"
date_logwap_end=`date "+%s"`
time=`expr "$date_logwap_end" - "$date_logwap_start"`
echo "all process for log_wap.py take $time seconds"
echo "**************************************************************************************"

##12、更新统计结果表中相关的PID属性
PID_CMD="python -u $PROGRAM_PATH/update_stat.py $log_date"
echo $PID_CMD
date_updatestat_start=`date "+%s"`
$PID_CMD
##STATUS:程序执行状态，0：成功 非0：失败
STATUS=$?
exception $STATUS "PID更新脚本update_stat.py出错"
date_updatestat_end=`date "+%s"`
time=`expr "$date_updatestat_end" - "$date_updatestat_start"`
echo "all process for update_stat.py take $time seconds"
echo "**************************************************************************************"

##13、合并主产品线、渠道、厂商中的Android数据入stat_day_total表
PRIMARY_CMD="$PROGRAM_PATH/stat_day_total_import.sh $log_date"
echo $PRIMARY_CMD
date_primary_start=`date "+%s"`
$PRIMARY_CMD
##STATUS:程序执行状态，0：成功 非0：失败
STATUS=$?
exception $STATUS "主产品线数据合并脚本stat_day_total_import.sh出错"
date_primary_end=`date "+%s"`
time=`expr "$date_primary_end" - "$date_primary_start"`
echo "all process for stat_day_total_import.sh take $time seconds"
echo "**************************************************************************************"

##分析完成，短信通知##
date_end=`date "+%s"`
time=`expr "$date_end" - "$date_start"`
echo "all process take $time seconds"

exception 1 "$log_date数据分析完成，耗时$time秒"
